#-- coding: utf-8 -*-
import t_const

"""巫师指令定义方面客户端和服务端公用，其他的函数为客户端专用"""
WIZARD_CHANGE_SUN	= 0x01				#改变阳光数量
WIZARD_END_GAME		= 0x02				#立刻结束游戏
WIZARD_ADD_ZOMBIE	= 0x03				#立刻刷新僵尸

#帮助文字字典
HELP_TEXT = {WIZARD_CHANGE_SUN : "改变阳光数量指令//change_sun：参数1：整数（可正负，代表阳光数量的改变值），示例：//change_sun 100", \
				WIZARD_END_GAME : "立刻结束游戏指令//end_game：参数1：0或1（1代表胜利，0代表失败），示例：//end_game 1", \
				WIZARD_ADD_ZOMBIE : "增加n个僵尸//add_zombie: 参数1：正整数（代表僵尸数量）；参数2：正整数（代表僵尸种类，-1代表随机），示例：//add_zombie 10 -1", \
			}

#对外输出文字，用于向聊天窗口输出帮助文字信息
def out_put(text):
	import t_ui_wait
	t_ui_wait.inst.add_notice(text)

#检测某个字符串是否符合某个巫师指令的格式，在发送聊天消息前调用， 用于过滤巫师指令
def check_wizard(text):
	#如果空字符串或者为None，返回不是巫师指令
	if not text:
		return True

	#以空格为分隔符进行字符串分解
	line = text.split()

	#假如是需要显示帮助的指令
	if line[0] == "//help":
		for text in HELP_TEXT.itervalues():
			out_put(text)
		return False

	#检测是否是游戏中巫师指令
	elif check_playing_wizard(line):
		return False

	#检测是否是准备状态巫师指令
	elif check_waiting_wizard(line):
		return False

	# 输入完后焦点失效
	import t_game
	t_game.t_API.chat_set_focus(False)
	t_game.t_API.chat_hide(True)

	return True

#检测是否是游戏内巫师指令
def check_playing_wizard(line):
	import t_mapmgr, t_command
	#如果游戏管理对象不存在，返回false
	if not t_mapmgr.inst:
		return False
	#如果并不处于游戏中状态，返回false
	if t_mapmgr.inst.iStatus != t_const.GAME_PLAYING:
		return False

	#需要改变阳光数量
	if line[0] == "//change_sun":
		try:
			dEnergy = int(line[1])
		except:
			out_put(HELP_TEXT[WIZARD_CHANGE_SUN])
			return False
		t_command.inst.send_wizard(WIZARD_CHANGE_SUN, [dEnergy, ])
		return True

	#需要立刻结束游戏
	elif line[0] == "//end_game":
		try:
			win = int(line[1])
		except:
			out_put(HELP_TEXT[WIZARD_END_GAME])
			return False
		t_command.inst.send_wizard(WIZARD_END_GAME, [win, ])
		return True

	#需要立刻刷新僵尸
	elif line[0] == "//add_zombie":
		try:
			iNum = int(line[1])
		except:
			out_put(HELP_TEXT[WIZARD_ADD_ZOMBIE])
			return False
		if iNum <= 0:
			out_put(HELP_TEXT[WIZARD_ADD_ZOMBIE])
			return False
		try:
			iJob = int(line[2])
		except:
			iJob = -1
		t_command.inst.send_wizard(WIZARD_ADD_ZOMBIE, [iNum, iJob])
		return True

	return False

#检测是否是准备状态巫师指令
def check_waiting_wizard(line):
	import t_mapmgr, t_command
	if not t_mapmgr.inst:
		return False
	if t_mapmgr.inst.iStatus != t_const.GAME_WAIT:
		return False
	return False

